﻿// 102 稳定排序.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>

using namespace std;

/*
http://oj.daimayuan.top/course/22/problem/857

给定 𝑛 个正整数 a1,a2,…,an
，输出将它们从小到大排序后，每个数字应该排在第几位（对于相同的数字，序号小的排在前面）。

输入格式
第一行一个整数 n，表示数字个数。

接下来一行包含 n个整数 a1,a2,...,an。

输出格式
一行 n个整数，表示答案。

样例输入
5
3 9 5 3 2
样例输出
2 5 4 3 1
数据规模
对于 100%的数据，保证 1≤n≤105,1≤ai≤109。
*/


struct Node {
	int x, y;
	bool operator < (const Node& A)const {
		if (x != A.x)
			return x < A.x;
		return y < A.y;
	}
}a[100001];
int n, c[100001];

void quicksort(int l, int r) {
	if (l >= r)
		return;
	swap(a[l], a[l + rand() % (r - l + 1)]);
	Node x = a[l];
	int i = l , j = r;
	while (i < j) {
		while (i < j && x < a[j])
			--j;
		if (i < j)
			a[i++] = a[j];
		while (i < j && a[i] < x)
			++i;
		if (i < j)
			a[j--] = a[i];
	}
	a[i] = x;
	quicksort(l,i-1);
	quicksort(i+1,r);
}

int main()
{
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
		scanf("%d",&a[i].x),a[i].y = i;
	quicksort(1,n);
	for (int i = 1; i <= n; i++)
		c[a[i].y] = i;
	for (int i = 1; i <= n; i++)
		printf("%d ",c[i]);
	printf("\n");
	return 0;
}

 